20 research outputs found

    Observation mechanisms for in-field software-based self-test

    Get PDF
    When electronic systems are used in safety critical applications, as in the space, avionic, automotive or biomedical areas, it is required to maintain a very low probability of failures due to faults of any kind. Standards and regulations play a significant role, forcing companies to devise and adopt solutions able to achieve predefined targets in terms of dependability. Different techniques can be used to reduce fault occurrence or to minimize the probability that those faults produce critical failures (e.g., by introducing redundancy). Unfortunately, most of these techniques have a severe impact on the cost of the resulting product and, in some cases, the probability of failures is too large anyway. Hence, a solution commonly used in several scenarios lies on periodically performing a test able to detect the occurrence of any fault before it produces a failure (in-field test). This solution is normally based on forcing the processor inside the Device Under Test to execute a properly written test program, which is able to activate possible faults and to make their effects visible in some observable locations. This approach is also called Software-Based Self-Test, or SBST. If compared with testing in an end of manufacturing scenario, in-field testing has strong limitations in terms of access to the system inputs and outputs because Design for Testability structures and testing equipment are usually not available. As a consequence there are reduced possibilities to activate the faults and to observe their effects. This reduced observability particularly affects the ability to detect performance faults, i.e. faults that modify the timing but not the final value of computations. This kind of faults are hard to detect by only observing the final content of predefined memory locations, that is the usual test result observation method used in-field. Initially, the present work was focused on fault tolerance techniques against transient faults induced by ionizing radiation, the so called Single Event Upsets (SEUs). The main contribution of this early stage of the thesis lies in the experimental validation of the feasibility of achieving a safe system by using an architecture that combines task-level redundancy with already available IP cores, thus minimizing the development time. Task execution is replicated and Memory Protection is used to guarantee that any SEU may affect one and only one of the replicas. A proof of concept implementation was developed and validated using fault injection. Results outline the effectiveness of the architecture, and the overhead analysis shows that the proposed architecture is effective in reducing the resource occupation with respect to N-modular redundancy, at an affordable cost in terms of application execution time. The main part of the thesis is focused on in-field software-based self-test of permanent faults. A set of observation methods exploiting existing or ad-hoc hardware is proposed, aimed at obtaining a better coverage, in particular of performance faults. An extensive quantitative evaluation of the proposed methods is presented, including a comparison with the observation methods traditionally used in end of manufacturing and in-field testing. Results show that the proposed methods are a good complement to the traditionally used final memory content observation. Moreover, they show that an adequate combination of these complementary methods allows for achieving nearly the same fault coverage achieved when continuously observing all the processor outputs, which is an observation method commonly used for production test but usually not available in-field. A very interesting by-product of what is described above is a detailed description of how to compute the fault coverage achieved by functional in-field tests using a conventional fault simulator, a tool that is usually applied in an end of manufacturing testing scenario. Finally, another relevant result in the testing area is a method to detect permanent faults inside the cache coherence logic integrated in each cache controller of a multi-core system, based on the concurrent execution of a test program by the different cores in a coordinated manner. By construction, the method achieves full fault coverage of the static faults in the addressed logic.Cuando se utilizan sistemas electrónicos en aplicaciones críticas como en las áreas biomédica, aeroespacial o automotriz, se requiere mantener una muy baja probabilidad de malfuncionamientos debidos a cualquier tipo de fallas. Los estándares y normas juegan un papel importante, forzando a los desarrolladores a diseñar y adoptar soluciones que sean capaces de alcanzar objetivos predefinidos en cuanto a seguridad y confiabilidad. Pueden utilizarse diferentes técnicas para reducir la ocurrencia de fallas o para minimizar la probabilidad de que esas fallas produzcan mal funcionamientos críticos, por ejemplo a través de la incorporación de redundancia. Lamentablemente, muchas de esas técnicas afectan en gran medida el costo de los productos y, en algunos casos, la probabilidad de malfuncionamiento sigue siendo demasiado alta. En consecuencia, una solución usada a menudo en varios escenarios consiste en realizar periódicamente un test que sea capaz de detectar la ocurrencia de una falla antes de que esta produzca un mal funcionamiento (test en campo). En general, esta solución se basa en forzar a un procesador existente dentro del dispositivo bajo prueba a ejecutar un programa de test que sea capaz de activar las posibles fallas y de hacer que sus efectos sean visibles en puntos observables. A esta metodología también se la llama auto-test basado en software, o en inglés Software-Based Self-Test (SBST). Si se lo compara con un escenario de test de fin de fabricación, el test en campo tiene fuertes limitaciones en términos de posibilidad de acceso a las entradas y salidas del sistema, porque usualmente no se dispone de equipamiento de test ni de la infraestructura de Design for Testability. En consecuencia se tiene menos posibilidades de activar las fallas y de observar sus efectos. Esta observabilidad reducida afecta particularmente la habilidad para detectar fallas de performance, es decir fallas que modifican la temporización pero no el resultado final de los cálculos. Este tipo de fallas es difícil de detectar por la sola observación del contenido final de lugares de memoria, que es el método usual que se utiliza para observar los resultados de un test en campo. Inicialmente, el presente trabajo estuvo enfocado en técnicas para tolerar fallas transitorias inducidas por radiación ionizante, llamadas en inglés Single Event Upsets (SEUs). La principal contribución de esa etapa inicial de la tesis reside en la validación experimental de la viabilidad de obtener un sistema seguro, utilizando una arquitectura que combina redundancia a nivel de tareas con el uso de módulos hardware (IP cores) ya disponibles, que minimiza en consecuencia el tiempo de desarrollo. Se replica la ejecución de las tareas y se utiliza protección de memoria para garantizar que un SEU pueda afectar a lo sumo a una sola de las réplicas. Se desarrolló una implementación para prueba de concepto que fue validada mediante inyección de fallas. Los resultados muestran la efectividad de la arquitectura, y el análisis de los recursos utilizados muestra que la arquitectura propuesta es efectiva en reducir la ocupación con respecto a la redundancia modular con N réplicas, a un costo accesible en términos de tiempo de ejecución. La parte principal de esta tesis se enfoca en el área de auto-test en campo basado en software para la detección de fallas permanentes. Se propone un conjunto de métodos de observación utilizando hardware existente o ad-hoc, con el fin de obtener una mejor cobertura, en particular de las fallas de performance. Se presenta una extensa evaluación cuantitativa de los métodos propuestos, que incluye una comparación con los métodos tradicionalmente utilizados en tests de fin de fabricación y en campo. Los resultados muestran que los métodos propuestos son un buen complemento del método tradicionalmente usado que consiste en observar el valor final del contenido de memoria. Además muestran que una adecuada combinación de estos métodos complementarios permite alcanzar casi los mismos valores de cobertura de fallas que se obtienen mediante la observación continua de todas las salidas del procesador, método comúnmente usado en tests de fin de fabricación, pero que usualmente no está disponible en campo. Un subproducto muy interesante de lo arriba expuesto es la descripción detallada del procedimiento para calcular la cobertura de fallas lograda mediante tests funcionales en campo por medio de un simulador de fallas convencional, una herramienta que usualmente se aplica en escenarios de test de fin de fabricación. Finalmente, otro resultado relevante en el área de test es un método para detectar fallas permanentes dentro de la lógica de coherencia de cache que está integrada en el controlador de cache de cada procesador en un sistema multi procesador. El método está basado en la ejecución de un programa de test en forma coordinada por parte de los diferentes procesadores. Por construcción, el método cubre completamente las fallas de la lógica mencionad

    Utilización de FPGAs como aceleradores de cálculo

    Get PDF
    Si bien las computadoras son cada vez más rápidas, las necesidades de cálculo también se hacen cada vez más pesadas y consumen más tiempo y recursos. Existen varias formas de aumentar la velocidad de un computador: procesador más rápido, varios procesadores trabajando en paralelo que se distribuyan tareas, etc. Este artículo describe experiencias realizadas utilizando otra forma de aumentar la velocidad con el uso de circuitos electrónicos dedicados que realicen cierta parte del trabajo y compartan la tarea con el procesador central de una computadora. Esta alternativa hasta hace poco presentaba un costo tan alto que era impensable su utilización en términos generales, pero con la aparición de chips de gran tamaño programables por el usuario (FPGAs), y la posibilidad de reprogramarlos infinitas veces de acuerdo a las necesidades de la aplicación concreta hacen que sea una opción viable. Para poder usar esta tecnología en forma amplia es necesario resolver varias etapas, principalmente el diseño de los circuitos a programar en los chips así como el diseño de las interfaces hardware - software de aplicación. La arquitectura utilizada se basó en una placa reconfigurable funcionando como un coprocesador en conjunto con un PC, y se realizaron bibliotecas hardware para acelerar ciertos cálculos específicos. Los algoritmos probados han sido de redes neuronales, tratamiento de imágenes, y encriptado.Although computers are becoming faster all the time, the need for calculation is also heavier and time consuming. There are various ways to increment the speed of a computer: a faster processor, many processors working in parallel and sharing tasks, and so on. This paper describes experiences where a different approach was used to increase speed, using electronic circuits dedicated to do part of the job and collaborate with the main processor of a computer. This alternative was so expensive until recently that its use was unthinkable in general terms. But when big sized user programmable chips (FPGAs) appeared, together with the possibility of infinite reprogramming according to the needs of the given applications, this became a realistic option. To be able to use this technology widely it is necessary to solve many stages, mainly the design of the circuits to be programmed in the chips as well as the designing of the hardware - software interfaces of application. The architecture that was used was based on a reconfigurable board working as a coprocessor together with a PC, and hardware libraries were implemented to accelerate certain specific calculations. The tested algorithms have been artificial neural networks, image processing and data encryption

    Diseño hardware en Uruguay : una alternativa económica y técnicamente viable

    Get PDF
    El objetivo principal de este trabajo es mostrar que el diseño de hardware es una alternativa válida a tener en cuenta a la hora de decidir acerca de cómo implementar un determinado desarrollo o la viabilidad técnico - económica de un cierto producto en nuestro medio. Sin pretender hacer un análisis histórico del desarrollo de hardware en Uruguay y su relación con el software, se mostrarán nuevas tendencias en el diseño hardware y sus alcances. Múltiples factores han contribuido a que el diseño de hardware electrónico vuelva a ser una alternativa viable en nuestro país. La reducción de los costos fijos de producción y prototipado, el costo accesible de estaciones potentes de diseño asistido por computador, la facilidad de comunicación y acceso a la información de proveedores hacen factible hoy en día la aplicación en nuestro medio de técnicas de primera línea en la electrónica mundial. Ejemplos de estas técnicas son los dispositivos lógicos programables, los circuitos integrados de aplicación específica y los circuitos impresos de alta densidad. Este nuevo escenario ha permitido el desarrollo de los conocimientos necesarios para la aplicación de varias de éstas tecnologías y llevar a cabo algunas experiencias en su uso. Se presentan una serie de experiencias realizadas en el Instituto de Ingeniería Eléctrica de la Facultad de Ingeniería en los últimos años que muestran lo anteriormente expresado. Entre ellas podemos destacar el desarrollo de una tarjeta adquisidora de video, desarrollos en el área de lógica reconfigurable y el diseño de un circuito integrado a medida para marcapasosThe main goal of this paper is to show that electronic hardware design is a valid alternative to be taken into account when deciding on the implementation of a certain development or the technical - economical possibility of a certain product in our context. The intention is not to make a historical analysis of the development of hardware in Uruguay or its relationship with software. New tendencies in hardware design will be shown as well as its foresees. Many factors have contributed to the feasibility of the electronic hardware design in our country. The use of state of the art technologies is being made possible by the reduction in prototyping and production fixed costs, the affordable cost of powerful CAD stations and the simplicity of communications and access to information from providers and manufacturers. Some examples of this techniques are PLDs, ASICs, and high density PCBs. This new scenario has allowed the development of the necessary knowledge for the use of many of this technologies and to be able to do some experiences in their uses. A series of experiences done in recent years in the Instituto de Ingeniería Eléctrica (IIE) of the Facultad de Ingeniería are presented to show what was expressed earlier. Among them we highlight the development of a video acquisition board, developments in the area of reconfigurable logic, and the design of an ASIC for pacemakers

    NeuroFPGA : Implementando redes neuronales artificiales en dispositivos lógicos programables

    Get PDF
    Se presenta una implementación FPGA de una red neuronal del tipo perceptrón multicapa. El sistema está parametrizado tanto en aspectos relacionados con la red neuronal (e.g.: cantidad de capas y cantidad de neuronas en cada capa) como en aspectos de implementación (e.g.: ancho de palabra, factores de pre-escalado y cantidad de multiplicadores disponibles). Esto permite utilizar el diseño para la realización de diferentes redes, o ensayar diferentes compromisos área-velocidad simplemente recompilando el diseño. Se utilizó aritmética de punto fijo con pre-escalado configurable para cada capa. El sistema fue testeado sobre una placa ARC-PC! de Altera'". Se implementaron varios ejemplos de diferentes dominios de aplicación, mostrando la flexibilidad y facilidad de uso del circuito obtenido. Se obtuvo una aceleración apreciable del algoritmo en comparación con una solución "solo software" basada en el toolbox de Matlab para redes neuronales, incluso apesar de que la placa utilizada es bastante antigua

    Analizador lógico de 100MHz utilizando FPGA

    Get PDF
    En este trabajo se describe el diseño de un analizador lógico con 48 canales, 16K muestras por canal y que puede operar con frecuencias de adquisición de hasta 100MHz. La interfaz de usuario está realizada sobre un computador que se comunica en forma serie o paralelo con el analizador. Para el control de la adquisición de las muestras, se utiliza una FPGA, que se encarga de la detección de la condición de disparo, del manejo de las memorias FIFO que se usan para el almacenamiento de las muestras, y de la interconexión con el microcontrolador que realiza la comunicación con el computador. El chip elegido fue el EPF6016 de la nueva familia FLEX6000 de Altera, y el sistema de desarrollo utilizado fue el Max+Plus II de la misma compañía. Se detallan la arquitectura y los criterios de diseño utilizados así como los resultados obtenidos.This paper describes the design of a logic analyzer with 48 channels, 16K samples per channel and up to 100MHz of acquisition frequency. The user interface is implemented with a computer connected via a serial or parallel port. An FPGA is used for the sample acquisition control. This module controls the trigger condition detection, the FIFO memory used for sample storage, and the connection with a microcontroller which performs the communications with the computer. The selected chip was the EPF6016 of the new Altera FLEX6000 family, and the development software used was Max+Plus II from the same company. The architecture, the design criteria used and the obtained results are described

    Implementation of adaptive logic networks on an FPGA board

    Get PDF
    This work is part of a project that studies the implementation of neural network algorithms in reconfigurable hardware as a way to obtain a high performance neural processor. The results for Adaptive Logic Network (ALN) type binary networks with and without learning in hardware are presented. The designs were made on a hardware platform consisting of a PC compatible as the host computer and an ALTERA RIPP10 reconfigurable board with nine FLEX8K FPGAs and 512KB RAM. The different designs were run on the same hardware platform, taking advantage of its configurability. A software tool was developed to automatically convert the ALN network description resulting from the training process with the ATREE 2.7 for Windows software package into a hardware description file. This approach enables the easy generation of the hardware necessary to evaluate the very large combinatorial functions that results in an ALN. In an on-board learning version, an ALN basic node was designed optimizing it in the amount of cells per node used. Several nodes connected in a binary tree structure for each output bit, together with a control block, form the ALN network. The total amount of logic available on-board in the used platform limits the maximum size of the networks from a small to medium range. The performance was studied in pattern recognition applications. The results are compared with the software simulation of ALN networks

    Diseño en el espacio de estado de un controlador no lineal para un motor DC

    No full text
    PostprintSe desarrolla un modelo en el espacio de estado de un controlador ripple constante para un convertidor DC-DC que alimenta un motor de corriente continua con excitación independiente. El controlador esta destinado al manejo del convertidor para regular la velocidad o el par del motor. Fue implementado usando una estrategia de control a ripple fijo, lo que permite una regulación rápida y segura
    corecore